// 对于axios进行二次封装
import axios from 'axios'

// 引入进度条
import nprogress from 'nprogress';
// 引入进度条样式
import 'nprogress/nprogress.css'
// 在当前模块引入store
import store from '@/store';

// 创建axios的实例
const requests = axios.create({
    // 配置对象
    // 基础路径,发请求的时候,路径当中会出现api
    baseURL: "/api",
    // 超过5秒请求失败
    timeout: 5000
});

// 请求拦截器
requests.interceptors.request.use((config) => {
    // config:配置对象
    // 进度条开始
    nprogress.start();
    if (store.state.detail.uuid_token) {
        // 请求添加一个请求头userTempId(需要配合后端人员)
        config.headers.userTempId = store.state.detail.uuid_token
    }
    // 需要携带token带给服务器
    if (store.state.user.token) {
        config.headers.token = store.state.user.token
    }
    return config
})

// 响应拦截器
requests.interceptors.response.use((res) => {
    // 成功的回调
    // 进度条结束
    nprogress.done();
    return res.data;
}, (error) => {
    // 失败的回调
    return Promise.reject(new Error('faile'))
})

// 对外暴露
export default requests
